package org.zzh.config;

import org.springframework.format.Formatter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * 自定义日期格式化器
 * @author 十里坡
 */
public  class CustomDateFormatter implements Formatter<Date> {
    private final SimpleDateFormat dateFormat;

    public CustomDateFormatter(String pattern) {
        this.dateFormat = new SimpleDateFormat(pattern);
        // 设置严格解析日期
        this.dateFormat.setLenient(false);
    }

    @Override
    public Date parse(String text, Locale locale) throws ParseException {
        // 尝试直接解析为完整的日期格式
        try {
            return dateFormat.parse(text);
        } catch (ParseException e) {
            // 如果失败，尝试解析为年月格式
            if (text.matches("\\d{4}-\\d{2}")) {
                // 默认设置为该月的第一天
                text += "-01";
                return dateFormat.parse(text);
            }
            throw new IllegalArgumentException("Invalid date format. Please use this format: 'yyyy-MM-dd' or 'yyyy-MM'");
        }
    }

    @Override
    public String print(Date date, Locale locale) {
        return dateFormat.format(date);
    }
}

